// To parse this JSON data, do
//
//     final evaluationBenchmarkReportResult = evaluationBenchmarkReportResultFromJson(jsonString);

import 'dart:convert';

EvaluationBenchmarkReportResult evaluationBenchmarkReportResultFromJson(
        String str) =>
    EvaluationBenchmarkReportResult.fromJson(json.decode(str));

String evaluationBenchmarkReportResultToJson(
        EvaluationBenchmarkReportResult data) =>
    json.encode(data.toJson());

class EvaluationBenchmarkReportResult {
  EvaluationBenchmarkReportResult({
    this.status,
    this.message,
    this.result,
  });

  int? status;
  String? message;
  BenchmarkReportData? result;

  factory EvaluationBenchmarkReportResult.fromJson(Map<String, dynamic> json) =>
      EvaluationBenchmarkReportResult(
        status: json["status"],
        message: json["message"],
        result: BenchmarkReportData.fromJson(json["result"]),
      );

  Map<String, dynamic> toJson() => {
        "status": status,
        "message": message,
        "result": result != null ? result!.toJson() : null,
      };
}

class BenchmarkReportData {
  BenchmarkReportData({
    this.listening,
    this.speaking,
    this.studentName,
    this.writing,
    this.reading,
    this.className,
    this.schoolName,
  });

  ListeningClass? listening;
  ListeningClass? speaking;
  String? studentName;
  ListeningClass? writing;
  ListeningClass? reading;
  String? className;
  String? schoolName;

  Map<String, dynamic> _toMap() {
    return {
      'listening': listening,
      'speaking': speaking,
      'writing': writing,
      'reading': reading
    };
  }

  dynamic get(String propertyName) {
    var _mapRep = _toMap();
    if (_mapRep.containsKey(propertyName)) {
      return _mapRep[propertyName];
    }
    return null;
  }

  factory BenchmarkReportData.fromJson(Map<String, dynamic> json) =>
      BenchmarkReportData(
        listening: json["listening"] != null
            ? ListeningClass.fromJson(json["listening"])
            : null,
        speaking: json["speaking"] != null
            ? ListeningClass.fromJson(json["speaking"])
            : null,
        studentName: json["studentName"],
        writing: json["writing"] != null
            ? ListeningClass.fromJson(json["writing"])
            : null,
        reading: json["reading"] != null
            ? ListeningClass.fromJson(json["reading"])
            : null,
        className: json["className"],
        schoolName: json["schoolName"],
      );

  Map<String, dynamic> toJson() => {
        "listening": listening != null ? listening!.toJson() : null,
        "speaking": speaking != null ? speaking!.toJson() : null,
        "studentName": studentName,
        "writing": writing != null ? writing!.toJson() : null,
        "reading": reading != null ? reading!.toJson() : null,
        "className": className,
        "schoolName": schoolName,
      };
}

class ListeningClass {
  ListeningClass({
    required this.summary,
    this.comment,
    this.conversationsAndDiscussions,
    this.informationalTexts,
    this.fictionalTexts,
    this.interpersonalCommunication,
    this.presentationalCommunication,
  });

  int? summary;
  String? comment;
  int? conversationsAndDiscussions;
  int? informationalTexts;
  int? fictionalTexts;
  int? interpersonalCommunication;
  int? presentationalCommunication;

  factory ListeningClass.fromJson(Map<String, dynamic> json) => ListeningClass(
        summary: json["summary"],
        comment: json["comment"],
        conversationsAndDiscussions: json["Conversations and discussions"],
        informationalTexts: json["Informational texts"],
        fictionalTexts: json["Fictional texts"],
        interpersonalCommunication: json["Interpersonal Communication"],
        presentationalCommunication: json["Presentational Communication"],
      );

  Map<String, dynamic> toJson() => {
        "summary": summary,
        "comment": comment,
        "Conversations and discussions": conversationsAndDiscussions,
        "Informational texts": informationalTexts,
        "Fictional texts": fictionalTexts,
        "Interpersonal Communication": interpersonalCommunication,
        "Presentational Communication": presentationalCommunication,
      };
}
